<?php

/**
 * Pertinencia form.
 *
 * @package    sistema_estadisticas
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class PertinenciaForm extends BasePertinenciaForm
{

	public function configure()
	{
		$this->widgetSchema['docente_id'] = new WidgetFormAutocomplete(
			array(
				'action' => 'docente/buscar',
				'model' => 'Docente',
			)
		);

		$this->widgetSchema['estudiante_list'] = new WidgetFormAutocomplete(
			array(
				'action' => 'estudiante/buscar',
				'model' => 'Estudiante',
				'multiple' => true,
				'plural' => 'Estudiantes',
				'label' => 'Estudiantes'
			)
		);

		$this->widgetSchema['carrera_id']->setOption('order_by', array('denominacion', 'ASC'));

		$this->setWidget('f_solicitud', new WidgetFormDatePick());
		$this->setWidget('f_respuesta', new WidgetFormDatePick());
		$this->setValidator('estudiante_list', new sfValidatorDoctrineChoice(
			array('multiple' => true, 'model' => 'Estudiante', 'required' => true)));

		$this->widgetSchema->setLabel('f_solicitud', 'Fecha de solicitud');
		$this->widgetSchema->setLabel('f_respuesta', 'Fecha de respuesta');
	}

	public function saveEstudianteList($con = null, $values = null)
	{
		if (!isset($this->widgetSchema['estudiante_list']))
		{
			return;
		}

		if ($values == null)
		{
			if (!$this->isValid())
			{
				throw $this->getErrorSchema();
			}

			$values = $this->getValue('estudiante_list');
			if (!is_array($values))
			{
				$values = array();
			}
		}

		$existing = $this->object->Estudiante->getPrimaryKeys();

		$unlink = array_diff($existing, $values);
		if (!empty($unlink))
		{
			$this->object->unlink('Estudiante', array_values($unlink));

			//se crea la version si se editan los estudiantes
			if (!$this->isNew()) //auditoria entidad 
				$this->object->state(Doctrine_Record::STATE_DIRTY);
		}

		$link = array_diff($values, $existing);
		if (!empty($link))
		{
			$this->object->link('Estudiante', array_values($link));

			//se crea la version si se editan los estudiantes
			if (!$this->isNew()) //auditoria entidad 
				$this->object->state(Doctrine_Record::STATE_DIRTY);
		}
	}

}
